package ljl.alg.wangzheng_camp.round1.bitwise;

/**
 * 两个数字出现一次，其它数字都出现两次
 * 上次没做出来，这次试试
 * */
public class _offer56_1_single_number {
    
    /**
     * 下次我应该能记住了
     *
     * 吧
     * */
    public int[] singleNumbers(int[] nums) {
        int x = 0, y = 0, mask = 1;
        int xor = 0;
        for (int num : nums) {
            xor ^= num;
        }
        for (int i = 0; i < 32; i++) {
            if ((xor & mask) != 0) break;
            mask <<= 1;
        }
        for (int num : nums) {
            if ((num & mask) == 0) x ^= num;
            else y ^= num;
        }
        return new int[]{x, y};
    }
}
